﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Credisoft.Models.Credisoft_BO;

namespace Credisoft.Models.Credisoft_DAO
{
    public class PersonDAO
    {

        public PersonBO getPersonDataById(int personId)
        {
            // Se abre la conexion con la Base de Datos
            credisoftEntities bd = new credisoftEntities();

            // Se realiza una busqueda para encontrar una persona con determinado ID
            persona found = (from p in bd.persona
                            where p.idpersona == personId
                            select p).First();

            PersonBO objPerson = new PersonBO();

            // Si la busqueda fue exitosa, se crea un objeto para almacenar los resultados de la busqueda
            if (found != null)
            {
                objPerson.personId = found.idpersona;
                objPerson.names = found.nombres;
                objPerson.firstName = found.apellidopaterno;
                objPerson.lastName = found.apellidomaterno;
                objPerson.dni = found.dni;
                objPerson.email = found.email;
                objPerson.phonenumber = found.telefono;
                objPerson.address = found.direccion;
            }

            return objPerson;
        }

        public int insertPerson(persona person)
        {
            int success = 0;
            credisoftEntities db = new credisoftEntities(); // Se abre la conexion con la Base de Datos

            var existe = from p in db.persona
                         where p.dni.Equals(person.dni)
                         select p;

            if (existe.Count() > 0) return -1;
            
            db.persona.Add(person); // Se inserta un nuevo elemento en la Base de Datos
            success = db.SaveChanges(); // Se realiza commit en la Base de Datos

            return success;
        }

        public int editPerson(PersonBO person)
        {
            int success = 0;
            credisoftEntities db = new credisoftEntities(); // Se abre la conexion con la Base de Datos

            // Se realiza una busqueda para encontrar una persona con determinado ID
            persona nPerson = (from p in db.persona
                               where p.dni.Equals(person.dni)
                                       select p).First();

            // Si la busqueda fue exitosa, se edita el objeto con los datos de entrada recibidos por la funcion
            if (nPerson != null)
            {
                nPerson.nombres = person.names;
                nPerson.apellidopaterno = person.firstName;
                nPerson.apellidomaterno = person.lastName;
                nPerson.email = person.email;
                nPerson.telefono = person.phonenumber;
                nPerson.direccion = person.address;

                success = db.SaveChanges();
            }

            return success;
        }

    }
}